
/*
  启动服务
    # 分布式文件系统，http://node101:9870/，查看文件系统中文件
    hdp.sh hdfs
    # 分布式集群资源管理系统，http://node101:8088/
    hdp.sh yarn
    # 历史服务器，http://node101:19888，查看运行完成任务，尤其任务失败时，可能查看日志
    hdp.sh history
*/
# 验证sqoop配置是否正确
sqoop help
sqoop import --help

# 测试Sqoop是否能够成功连接数据库
sqoop list-databases \
--connect jdbc:mysql://node101:3306/ \
--username root \
--password 123456


# 1. todo: 将mysql中user_info表数据导入到HDFS的/test路径
sqoop import \
--connect jdbc:mysql://node101:3306/gmall \
--username root \
--password 123456 \
--table user_info \
--columns id,login_name,phone_num,birthday \
--where "id >=10 and id <= 30" \
--target-dir /test \
--delete-target-dir \
--fields-terminated-by ',' \
--num-mappers 2 \
--split-by id


# 2. todo：字段空值处理
# Hive中的Null在底层是以“\N”来存储，而MySQL中的Null在底层就是Null，为了保证数据两端的一致性。
# 在导出数据时采用--input-null-string和--input-null-non-string两个参数。
# 导入数据时采用--null-string和--null-non-string。
sqoop import \
--connect jdbc:mysql://node101:3306/gmall \
--username root \
--password 123456 \
--table user_info \
--columns id,login_name,name,phone_num,birthday,gender,operate_time \
--target-dir /test2 \
--delete-target-dir \
--fields-terminated-by ',' \
--null-string '\\N' \
--null-non-string '\\N' \
--num-mappers 1 \
--split-by id


# 3. todo: 启用压缩gzip
sqoop import \
--connect jdbc:mysql://node101:3306/gmall \
--username root \
--password 123456 \
--table user_info \
--columns id,login_name,name,phone_num,birthday,gender,operate_time \
--target-dir /test3 \
--delete-target-dir \
--fields-terminated-by ',' \
--compress \
--compression-codec gzip \
--null-string '\\N' \
--null-non-string '\\N' \
--num-mappers 1 \
--split-by id

# todo 4. 使用--query查询SQL语句获取数据
sqoop import \
--connect jdbc:mysql://node101:3306/gmall \
--username root \
--password 123456 \
--query '
SELECT
    id, nick_name, phone_num, birthday, gender, create_time
FROM gmall.user_info
WHERE id <= 30 AND $CONDITIONS
' \
--target-dir /test4 \
--delete-target-dir \
--fields-terminated-by ',' \
--compress \
--compression-codec gzip \
--null-string '\\N' \
--null-non-string '\\N' \
--num-mappers 1 \
--split-by id